home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1990: Discy Business / Discy Business.2mg / DEV.CD / TOOLS / CLIBS / LIBRARIES / CINCLUDE / PRODOS.H < prev    next >
Encoding:
C/C++ Source or Header  |  1988-08-01  |  12.4 KB  |  405 lines  |  [B0] Apple IIgs Source Code (0x000A)

  1. /******************************************** 
  2. ; File: ProDos.h 
  3. ; Copyright Apple Computer, Inc. 1986, 1987, 1988 
  4. ; All Rights Reserved 
  5. ********************************************/ 
  6.  
  7. #ifndef __types__ 
  8. #include <types.h> 
  9. #endif 
  10.  
  11. #ifndef __prodos__ 
  12. #define __prodos__ 
  13.  
  14. #ifdef __GSOS__ 
  15.  
  16. #undef GetSysPrefs 
  17. #undef BeginSession 
  18. #undef EndSession 
  19. #undef SessionStatus 
  20. #undef ResetCache 
  21. #undef ChangePath 
  22. #undef ClearBackupBit 
  23. #undef Close 
  24. #undef Create 
  25. #undef DControl 
  26. #undef Destroy 
  27. #undef DInfo 
  28. #undef DRead 
  29. #undef DStatus 
  30. #undef DWrite 
  31. #undef EraseDisk 
  32. #undef ExpandPath 
  33. #undef Flush 
  34. #undef Format 
  35. #undef GetBootVol 
  36. #undef GetDevNumber 
  37. #undef GetDirEntry 
  38. #undef GetEOF 
  39. #undef GetFileInfo 
  40. #undef GetFSTInfo 
  41. #undef GetLevel 
  42. #undef GetMark 
  43. #undef GetName 
  44. #undef GetPrefix 
  45. #undef GetVersion 
  46. #undef Newline 
  47. #undef Null 
  48. #undef Open 
  49. #undef Quit 
  50. #undef Read 
  51. #undef SetEOF 
  52. #undef SetFileInfo 
  53. #undef SetLevel 
  54. #undef SetMark 
  55. #undef SetPrefix 
  56. #undef UnbindInt 
  57. #undef Volume 
  58. #undef Write 
  59. #undef BindInt 
  60. #undef ChangePath 
  61. #undef ClearBackupBit 
  62. #undef Close 
  63. #undef Create 
  64. #undef DControl 
  65. #undef Destroy 
  66. #undef DInfo 
  67. #undef DRead 
  68. #undef DStatus 
  69. #undef DWrite 
  70. #undef EraseDisk 
  71. #undef ExpandPath 
  72. #undef Flush 
  73. #undef Format 
  74. #undef GetBootVol 
  75. #undef GetDevNumber 
  76. #undef GetDirEntry 
  77. #undef GetEOF 
  78. #undef GetFileInfo 
  79. #undef GetFSTInfo 
  80. #undef GetLevel 
  81. #undef GetMark 
  82. #undef GetName 
  83. #undef GetPrefix 
  84. #undef GetVersion 
  85. #undef Newline 
  86. #undef Null 
  87. #undef Open 
  88. #undef Quit 
  89. #undef Read 
  90. #undef SetEOF 
  91. #undef SetFileInfo 
  92. #undef SetLevel 
  93. #undef SetMark 
  94. #undef SetPrefix 
  95. #undef UnbindInt 
  96. #undef Volume 
  97. #undef Write 
  98.  
  99. #undef ChangePathRec  
  100. #undef CreateRec  
  101. #undef DAccessRec  
  102. #undef DevNumRec  
  103. #undef DInfoRec  
  104. #undef DIORec  
  105. #undef DirEntryRec  
  106. #undef ExpandPathRec  
  107. #undef FileInfoRec  
  108. #undef FormatRec  
  109. #undef FSTInfoRec  
  110. #undef InterruptRec  
  111. #undef IORec  
  112. #undef LevelRec  
  113. #undef NameRec  
  114. #undef NewlineRec  
  115. #undef OpenRec  
  116. #undef PositionRec  
  117. #undef PrefixRec  
  118. #undef QuitRec  
  119. #undef RefNumRec  
  120. #undef SetPositionRec  
  121. #undef SysPrefRec  
  122. #undef VersionRec  
  123. #undef VolumeRec  
  124. #undef DInfoRec  
  125. #undef FSTInfoRec  
  126. #undef OpenRec  
  127. #undef VersionRec 
  128.  
  129. #endif 
  130.  
  131.  
  132. #define invalidCallNum       0x01 /* error - invalid call number */
  133. #define unclaimedIntErr      0x01 /* error - fatal error - unclaimed interrupt */
  134. #define badPBlockPtr         0x05 /* error - call pointer out of bounds */
  135. #define pdosActiveErr        0x06 /* error - ProDOS is active */
  136. #define pdosBusyErr          0x07 /* error - ProDos is busy   */
  137. #define vcbUnusable          0x0A /* error - fatal error - VCB unusable */
  138. #define fcbUnusable          0x0B /* error - fatal error - FCB unusable */
  139. #define badBlockZero         0x0C /* error - fatal error - block zero allocated illegally */
  140. #define shdwInterruptErr     0x0D /* error - fatal error - interrupt occured while I/O shadowing off */
  141. #ifndef devNotFound /* error - device not found */
  142. #define devNotFound          0x10 
  143. #endif 
  144. #define badDevRefNum         0x11 /* error - invalid device reference number */
  145. #define osVersionErr         0x11 /* error - Wrong OS version  */
  146. #define badReqCode           0x20 /* error - invalid request code */
  147. #define intTableFull         0x25 /* error - interrupt table full */
  148. #define invalidOperation     0x26 /* error - invalid operation */
  149. #define ioError              0x27 /* error - I/O error */
  150. #define noDevConnect         0x28 /* error - no device connected */
  151. #define writeProtectErr      0x2B /* error - write protect error */
  152. #define diskSwitchErr        0x2E /* error - disk switched error */
  153. #define badPathName          0x40 /* error - invalid pathname syntax */
  154. #define fcbFullErr           0x42 /* error - FCB full error */
  155. #define badFileRefNum        0x43 /* error - invalid file reference number */
  156. #ifndef pathNotFound /* error - path not found */
  157. #define pathNotFound         0x44 
  158. #endif 
  159. #define volumeNotFound       0x45 /* error - volume not found */
  160. #ifndef fileNotFound /* error - file not found */
  161. #define fileNotFound         0x46 
  162. #endif 
  163. #define dupFileName          0x47 /* error - duplicate file name */
  164. #define volumeFullErr        0x48 /* error - volume full error */
  165. #define dirFullErr           0x49 /* error - directory full error */
  166. #define versionErr           0x4A /* error - version error (incompatible file format) */
  167. #ifndef badStoreType /* error - unsupported (or incorrect) storage type */
  168. #define badStoreType         0x4B 
  169. #endif 
  170. #ifndef eofEncountered /* error - end-of-file encountered */
  171. #define eofEncountered       0x4C 
  172. #endif 
  173. #define positionRangeErr     0x4D /* error - position out of range */
  174. #define accessErr            0x4E /* error - access not allowed */
  175. #define fileOpenErr          0x50 /* error - file is open */
  176. #define dirDamaged           0x51 /* error - directory structure is damaged */
  177. #define badVolType           0x52 /* error - unsupported volume type */
  178. #ifndef paramRangeErr /* error - parameter out of range */
  179. #define paramRangeErr        0x53 
  180. #endif 
  181. #define memoryFullErr        0x54 /* error - out of memory */
  182. #define vcbFullErr           0x55 /* error - VCB full error */
  183. #define dupVolumeErr         0x57 /* error - duplicate volume error */
  184. #define notBlkDevErr         0x58 /* error - not a blocked device */
  185. #ifndef invalidLevel /* error - invalid level */
  186. #define invalidLevel         0x59 
  187. #endif 
  188. #define blkNumRangeErr       0x5A /* error - block number out of range */
  189. #define notSameVolErr        0x5B /* error - different volumes found on ChangePath call */
  190. #define notExecSysFile       0x5C /* error - not an executable system file */
  191. #define osUnavailable        0x5D /* error - Operating system unavailable*/
  192. #define deallocateRamErr     0x5E /* error - Cannot deallocate /RAM     */
  193. #ifndef stackOverflow /* error - Return stack overflow      */
  194. #define stackOverflow        0x5F 
  195. #endif 
  196. #define dataUnavailable      0x60 /* error - Data unavailable           */
  197.  
  198. #define endofDirectory 0x0061 /*GetDirEntry -  */
  199.  
  200.  /* ProDOS Interface */
  201.  
  202. #define P_READ_ENABLE     1 
  203. #define P_WRITE_ENABLE    2 
  204. #define P_DESTROY_ENABLE  (1<<7) 
  205. #define P_RENAME_ENABLE   (1<<6) 
  206.  
  207.  /* for ReadBlock, WriteBlock */
  208.  
  209. typedef struct BlockRec { 
  210.      Word     blockDevNum; /* BlockRec -   */
  211.      Ptr      blockDataBuffer; /* BlockRec -   */
  212.      Longint  blockNum; /* BlockRec -   */
  213.      } BlockRec, *BlockRecPtr, **BlockRecHndl; 
  214.  
  215.  /* for GetDevNum */
  216.  
  217. typedef struct DevNumRec { 
  218.      Ptr      devName; /* DevNumRec -   */
  219.      Word     devNum; /* DevNumRec -   */
  220.     } DevNumRec, *DevNumRecPtr, **DevNumRecHndl; 
  221.  
  222.  /* for SetEOF, GetEOF */
  223.  
  224. typedef struct EOFRec { 
  225.      Word     eofRefNum; /* EOFRec -   */
  226.      Longint  eofPosition; /* EOFRec -   */
  227.     } EOFRec, *EOFRecPtr, **EOFRecHndl; 
  228.  
  229.  /* for Read, Write, Close, Flush */
  230.  
  231. typedef struct FileIORec { 
  232.      Word     fileRefNum; /* FileIORec -   */
  233.      Ptr      dataBuffer; /* FileIORec -   */
  234.      Longint  requestCount; /* FileIORec -   */
  235.      Longint  transferCount; /* FileIORec -   */
  236.     } FileIORec, *FileIORecPtr, **FileIORecHndl; 
  237.  
  238.  /* for Create, SetFileInfo, GetFileInfo */
  239.  
  240. typedef struct FileRec { 
  241.      Ptr     pathname; /* FileRec -   */
  242.      Word     fAccess; /* FileRec -   */
  243.      Word     fileType; /* FileRec -   */
  244.      Longint     auxType; /* FileRec -   */
  245.      Word     storageType; /* FileRec -   */
  246.      Word     createDate; /* FileRec -   */
  247.      Word     createTime; /* FileRec -   */
  248.      Word     modDate; /* FileRec -   */
  249.      Word     modTime; /* FileRec -   */
  250.      Long     blocksUsed; /* FileRec -   */
  251.     } FileRec, *FileRecPtr, **FileRecHndl; 
  252.  
  253.  /* for AllocInterrupt, DeallocInterrupt */
  254.  
  255. typedef struct InterruptRec { 
  256.      Word     intNum; /* InterruptRec -   */
  257.      Ptr      intCode; /* InterruptRec -   */
  258.     } InterruptRec, *InterruptRecPtr, **InterruptRecHndl; 
  259.  
  260.  /* for SetLevel, GetLevel */
  261.  
  262. typedef struct LevelRec { 
  263.      Word     level; /* LevelRec -   */
  264.     } LevelRec, *LevelRecPtr, **LevelRecHndl; 
  265.  
  266.  /* for SetMark, GetMark */
  267.  
  268. typedef struct MarkRec { 
  269.      Word     markRefNum; /* MarkRec -   */
  270.      Long     position; /* MarkRec -   */
  271.     } MarkRec, *MarkRecPtr, **MarkRecHndl; 
  272.  
  273.  /* for NewLine */
  274.  
  275. typedef struct NewlineRec { 
  276.      Word     newLRefNum; /* NewlineRec -   */
  277.      Word     enableMask; /* NewlineRec -   */
  278.      Word     newlineChar; /* NewlineRec -   */
  279.     } NewlineRec, *NewlineRecPtr, **NewlineRecHndl; 
  280.  
  281.  /* for Open */
  282.  
  283. typedef struct OpenRec { 
  284.      Word     openRefNum; /* OpenRec -   */
  285.      Ptr      openPathname; /* OpenRec -   */
  286.      Handle   ioBuffer; /* OpenRec -   */
  287.     } OpenRec, *OpenRecPtr, **OpenRecHndl; 
  288.  
  289.  /* for Destroy, ChangePath, ClearBackupBit, GetPathname, GetBootVol */
  290.  
  291. typedef struct PathNameRec { 
  292.      Ptr      pathname; /* PathNameRec -   */
  293.      Ptr      newPathname; /* PathNameRec -   */
  294.     } PathNameRec, *PathNameRecPtr, **PathNameRecHndl; 
  295.  
  296.  /* for SetPrefix, GetPrefix */
  297.  
  298. typedef struct PrefixRec { 
  299.      Word     prefixNum; /* PrefixRec -   */
  300.      Ptr      prefix; /* PrefixRec -   */
  301.     } PrefixRec, *PrefixRecPtr, **PrefixRecHndl; 
  302.  
  303.  /* for GetVersion */
  304. typedef struct VersionRec { 
  305.      Word     version; /* VersionRec -   */
  306.     } VersionRec, *VersionRecPtr, **VersionRecHndl; 
  307.  
  308.  /* for Volume */
  309.  
  310. typedef struct VolumeRec { 
  311.      Ptr      deviceName; /* VolumeRec -   */
  312.      Ptr      volName; /* VolumeRec -   */
  313.      Long     totalBlocks; /* VolumeRec -   */
  314.      Long     freeBlocks; /* VolumeRec -   */
  315.      Word     fileSysID; /* VolumeRec -   */
  316.     } VolumeRec, *VolumeRecPtr, **VolumeRecHndl; 
  317.  
  318.  /* for Format */
  319. typedef struct FormatRec { 
  320.    Ptr      devName; 
  321.    Ptr      volName; 
  322.    word  fileSysID; 
  323.    } FormatRec, *FormatRecPtr, **FormatRecHndl; 
  324.  
  325.  /* for Erase_Disk   */
  326. typedef FormatRec EraseDiskRec, *EraseDiskRecPtr, **EraseDiskRecHndl; 
  327.  
  328.  /* for Quit */
  329. typedef struct QuitRec { 
  330.    Ptr      quitPathname; 
  331.    Word  flags; 
  332.    } QuitRec, *QuitRecPtr, **QuitRecHndl; 
  333.  
  334.  /* for DInfo */
  335. typedef struct DInfoRec { 
  336.    Word devNum; 
  337.    Ptr  devName; 
  338.    } DInfoRec, *DInfoRecPtr, **DInfoRecHndl; 
  339.  
  340. typedef struct DirEntryRec { 
  341.    Word  refNum; 
  342.    Word  reserved; /* must be 0x0000 */
  343.    Word  base; 
  344.    Word  displacement; 
  345.    Ptr      nameBuffer; 
  346.    Word  entryNum; 
  347.    Word  fileType; 
  348.    Long  endOfFile; 
  349.    LongWord blockCount; 
  350.    TimeRec createTime; 
  351.    TimeRec modTime; 
  352.    Word  access; 
  353.    LongWord auxType; 
  354.    Word  fileSysID; 
  355.    } DirEntryRec, *DirEntryRecPtr, **DirEntryRecHndl; 
  356.  
  357. #define CREATE(pBlockPtr) (PDosInt(1,pBlockPtr)) 
  358. #define DESTROY(pBlockPtr) (PDosInt(2,pBlockPtr)) 
  359. #define CHANGE_PATH(pBlockPtr) (PDosInt(4,pBlockPtr)) 
  360. #define SET_FILE_INFO(pBlockPtr) (PDosInt(5,pBlockPtr)) 
  361. #define GET_FILE_INFO(pBlockPtr) (PDosInt(6,pBlockPtr)) 
  362. #define VOLUME(pBlockPtr) (PDosInt(8,pBlockPtr)) 
  363. #define SET_PREFIX(pBlockPtr) (PDosInt(9,pBlockPtr)) 
  364. #define GET_PREFIX(pBlockPtr) (PDosInt(10,pBlockPtr)) 
  365. #define CLEAR_BACKUP_BIT(pBlockPtr) (PDosInt(11,pBlockPtr)) 
  366. #define OPEN(pBlockPtr) (PDosInt(16,pBlockPtr)) 
  367. #define NEWLINE(pBlockPtr) (PDosInt(17,pBlockPtr)) 
  368. #define READ(pBlockPtr) (PDosInt(18,pBlockPtr)) 
  369. #define WRITE(pBlockPtr) (PDosInt(19,pBlockPtr)) 
  370. #define CLOSE(pBlockPtr) (PDosInt(20,pBlockPtr)) 
  371. #define FLUSH(pBlockPtr) (PDosInt(21,pBlockPtr)) 
  372. #define SET_MARK(pBlockPtr) (PDosInt(22,pBlockPtr)) 
  373. #define GET_MARK(pBlockPtr) (PDosInt(23,pBlockPtr)) 
  374. #define SET_EOF(pBlockPtr) (PDosInt(24,pBlockPtr)) 
  375. #define GET_EOF(pBlockPtr) (PDosInt(25,pBlockPtr)) 
  376. #define SET_LEVEL(pBlockPtr) (PDosInt(26,pBlockPtr)) 
  377. #define GET_LEVEL(pBlockPtr) (PDosInt(27,pBlockPtr)) 
  378. #define GET_DIR_ENTRY(pBlockPtr) (PDosInt(28,pBlockPtr)) 
  379. #define GET_DEV_NUM(pBlockPtr) (PDosInt(32,pBlockPtr)) 
  380. #define GET_LAST_DEV(pBlockPtr) (PDosInt(33,pBlockPtr)) 
  381. #define READ_BLOCK(pBlockPtr) (PDosInt(34,pBlockPtr)) 
  382. #define WRITE_BLOCK(pBlockPtr) (PDosInt(35,pBlockPtr)) 
  383. #define FORMAT(pBlockPtr) (PDosInt(36,pBlockPtr)) 
  384. #define ERASE_DISK(pBlockPtr) (PDosInt(37,pBlockPtr)) 
  385. #define GET_NAME(pBlockPtr) (PDosInt(39,pBlockPtr)) 
  386. #define GET_PATH_NAME(pBlockPtr) (PDosInt(39,pBlockPtr)) 
  387. #define GET_BOOT_VOL(pBlockPtr) (PDosInt(40,pBlockPtr)) 
  388. #define QUIT(pBlockPtr) (PDosInt(41,pBlockPtr)) 
  389. #define GET_VERSION(pBlockPtr) (PDosInt(42,pBlockPtr)) 
  390. #define D_INFO(pBlockPtr) (PDosInt(44,pBlockPtr)) 
  391. #define ALLOC_INTERRUPT(pBlockPtr) (PDosInt(49,pBlockPtr)) 
  392. #define DEALLOC_INTERRUPT(pBlockPtr) (PDosInt(50,pBlockPtr)) 
  393.  
  394.  /* GSOS.h provides a definition which eliminates glue by using the new Stackbased 
  395.  entry point. Other wise use the PdosInt() glue call                        */
  396. #ifndef __GSOS__ 
  397.  extern pascal void PDosInt(); 
  398. #endif 
  399.  
  400. #endif 
  401.  
  402.